作业12:TSDB & Cluster
作业12 TSDB & Cluster
一、时序数据库部分
先到官网查看下载方法,我下载的版本是2.6.1:下载地址
安装InfluxDB的命令
# MacOS 方法 命令行
brew update
brew install influxdb
# Winodws方法 命令行
# SHA256: c84c8237c74e795b88cc5ddc6f90a2c0db18f5b71e58deac28c3c69adbba1a53
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.6.1-windows-amd64.zip -UseBasicParsing -OutFile influxdb2-2.6.1-windows-amd64.zip
Expand-Archive .\influxdb2-2.6.1-windows-amd64.zip -DestinationPath 'C:\Program Files\InfluxData\influxdb\'
安装Telegraf采集数据的工具
# MacOS 方法 命令行
brew update
brew install telegraf
# Winodws方法 命令行
# SHA256: cb51a71313c62ddfd327b199346d8f87f39721e11cca01780173717961d9757a
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.25.0_windows_amd64.zip -UseBasicParsing -OutFile telegraf-1.25.0_windows_amd64.zip
Expand-Archive .\telegraf-1.25.0_windows_amd64.zip -DestinationPath 'C:\Program Files\InfluxData\telegraf'
安装好之后,启动数据库,然后用浏览器访问:http://localhost:8086/
(推荐Chrome浏览器,edge好像打不开网页)
influxd
按照教程配置好之后,得到Token还有启动的命令:
export INFLUX_TOKEN=gpDfH1EX6Ao6dTab54KbaHnw7br0DMfxUVH_UI5wPzzdkEHfP0Wk1ObhP67P_ETNhnY_7pO9sAGl2kVREz57Qg==
telegraf --config http://localhost:8086/api/v2/telegrafs/0a8462d6e0af2000
值得注意的是,默认只会监控System,也就是输出只有一张表,为了跟上课演示的一样的效果,需要编辑配置文件,然后加入后面的几行:
[[inputs.system]]
[[inputs.mem]]
[[inputs.disk]]
[[inputs.diskio]]
[[inputs.net]]
补充:Mac的brew的换源的方法
# 替换brew.git:
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 替换homebrew-core.git:
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
最后展示一下效果:
(监控CPU的空闲)
解释一下内存的图:
(监控内存的解释)
- 总内存64GB,这个是最上面的红色的线标示的,显然这个数值是没办法改变的除非是虚拟机调整内存。
- 为了让图有明显的变化,我开启了Adobe AE打开一个项目,进行动画帧的预览,给电脑内存增加一点压力。
- 开启AE并打开项目之后,可以明显的看到表中有几根线开始上涨,这几根线代表的是活跃内存、内存使用占比百分比、内存的使用大小,显然这也是符合逻辑的。
- 开启AE并打开项目之后,可以明显的看到表中有几根线开始下跌,这几根线代表的是不活跃内存、内存未使用的百分比、内存未使用的大小,显然这也是符合逻辑的。
- 最后关闭了AE,可以看到内存资源的占用又恢复了正常。空闲日常占用的量是不到20G的,进行特效渲染的时候大概是要占用到50G内存以上。
磁盘占用:
- 最上面的一根线代表总空间,2TB,符合实际。
- 中间有一段开始下载一个较大的文件,然后看到磁盘占用开始上涨,未使用空间减少,这也是符合逻辑的。
二、Nginx部分
第一种配置:使用默认策略(round-robin)
round-robin的策略就是轮流来,有服务器1,服务器2作为后端接受请求的,对于请求,就第一次交给server1,第二次交给server2,第三次交给server1,第四次交给server2,以此类推。
我这里监听端口设置为80,所以只需要直接访问localhost就可以得到结果。
具体的配置文件如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream myapp{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://myapp;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include servers/*;
}
连续两次点击访问这个localhost,得到的结果:
解释原因:首先因为是RR轮流来的策略,所以对于用户访问,会依次交给1、2、1、2的顺序,所以服务器找不到对应的session。(上一个服务器,比如服务器1存的session,下一次访问的时候是服务器2处理的,所以找不到session,所以每次都是new)
第二种配置:使用默认策略(round-robin+权重配置)
这次在配置的时候 server 127.0.0.1:8080 weight=3;
,给第一个服务器加上一个3的权重。
所以假如进行访问:第一次server1,第二次server1,第三次server1,第四次server2。之后重复循环:第五次server1,第六次server1,第七次server1,第八次server2。
至于访问的效果:第一次会创建一个new session,之后两次就是old session,session保持不变,然后第四次的时候就会访问到server2,这时候会继续创建一个new session。
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream myapp{
#ip_hash;
#least_conn;
server 127.0.0.1:8080 weight=3;
server 127.0.0.1:8090;
}
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
proxy_pass http://myapp;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include servers/*;
}
第一次:
第二次、第三次访问:
第四次:
第三种配置:使用默认策略(ip Hash)
解释原因:因为采用的是ip Hash,会利用访问用户的IP计算一个Hash值,然后根据Hash值确定是哪个服务器处理请求。
由于电脑的ip没变,所以一直访问的都是服务器一,所以session也可以维护。
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream myapp{
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
proxy_pass http://myapp;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include servers/*;
}
第一次:
第二次到第n次